var express = require('express');
var router = express.Router();
//导入jwt
const jwt = require('jsonwebtoken');
//导入模型
const AccountModel = require('../../models/AccountModel');

//导入 shortid
const shortid = require('shortid');

//导入moment
const moment = require('moment');

//声明token校验中间件
const checkTokenMiddleware = require('../../middlewares/checkTokenMiddleware');

//获取记账本的列表-使用promise
router.get('/account', checkTokenMiddleware, function (req, res, next) {
  

    AccountModel.find().sort({ time: -1 }).exec()
      .then(data => {
        //使用res.json()方法返回json数据
        res.json({
          code: '0000',
          msg: '读取成功.',
          data: data
        });

      })
      .catch(err => {
        res.status(500).send('读取失败.');
      });

  });


//账本新增记录
router.post('/account', checkTokenMiddleware, function (req, res, next) {
  //插入数据库
  AccountModel.create({
    ...req.body,
    //将时间转换为Date对象
    time: moment(req.body.time).toDate()
  })
    .then(data => {
      //成功提醒,使用res.json()方法返回json数据
      res.json({
        code: '0000',
        msg: '添加成功啦',
        data: data
      });
    })
    .catch(err => {
      // Handle error
      res.status(500).send(err);
    });
});

//删除记账本的记录-使用promise
router.delete('/account/:id', checkTokenMiddleware, (req, res) => {
  AccountModel.deleteOne({ _id: req.params.id }).exec()
    .then(data => {
      res.json({
        code: '0000',
        msg: '删除成功啦',
        data: {}
      });
    })
    .catch(err => {
      res.status(500).send('删除失败.');
    });
}
);

//获取单个记账本的记录-使用promise
router.get('/account/:id', checkTokenMiddleware,  (req, res) => {
  AccountModel.findOne({ _id: req.params.id }).exec()
    .then(data => {
      res.json({
        code: '0000',
        msg: '读取成功.',
        data: data
      });
    })
    .catch(err => {
      res.status(500).send('读取失败.');
    });
}
);

//更新单个账单的信息
router.patch('/account/:id', checkTokenMiddleware, (req, res) => {
  const id = req.params.id;
  AccountModel.updateOne({ _id: id }, { ...req.body, time: moment(req.body.time).toDate() }).exec()
    .then(result => {
      if (result.matchedCount === 0) {
        // 如果没有匹配到文档，可以返回一个错误消息
        res.status(404).send('文档未找到');
        return;
      }
      // 返回更新后的文档
      return AccountModel.findById(id).exec();
    })
    .then(data => {
      if (data) { // 只有当data不为null时才返回成功的JSON响应
        res.json({
          code: '0000',
          msg: '更新成功.',
          data: data
        });
      }
    })
    .catch(err => {
      res.status(500).send('更新失败.');
    });
});








module.exports = router;
